package com.googlecode.perfectable.visuable.configuration;

import com.googlecode.perfectable.visuable.event.Event;
import com.googlecode.perfectable.visuable.event.EventListener;
import com.googlecode.perfectable.visuable.visual.Visual;
import com.googlecode.perfectable.visuable.visual.controller.Controller;

public interface Configurator {
	<E extends Event, T extends EventListener<? super E>> T createListener(Class<T> listenerClass, Class<E> eventClass);

	<C extends Visual, T extends Controller<? super C>> T createController(Class<T> controllerClass,
			Class<C> visualClass);

	void injectVisual(Object target, String propertyName, Visual visual);
}
